package business.global.pk.ddz.cardtype.type;

import business.ddz.c2s.cclass.DDZ_define;
import business.global.pk.alg.params.BaseOpCard;
import business.global.pk.alg.params.BasePKParameter;
import business.global.pk.alg.type.Type_MultiPairs;
import business.global.pk.ddz.cardtype.util.DDZALGUtil;
import jsproto.c2s.cclass.pk.BasePockerLogic;

import java.util.ArrayList;

/**
 * 二对 Two pairs 4455（或者联队）
 */
public class DDZMultiPairs extends Type_MultiPairs<DDZALGUtil> {

    @Override
    public BaseOpCard getCardList(BasePKParameter parameter) {
        int previousOpType = parameter.previousOpType;
        ArrayList<Integer> previousCardList = parameter.previousCardList;
        //压开局,从大到小选择顺子
        if (previousOpType == DDZ_define.DDZ_CARD_TYPE.DDZ_CARD_TYPE_NOMARL.value()) {
            for (int i = 10; i >= 3; i--) {//最小3联
                parameter.lastTripleNum = i;
                parameter.targetType = DDZ_define.DDZ_CARD_TYPE.DDZ_CARD_TYPE_LIANDUI.value();
                BaseOpCard straight = getBasePKALGUtil().getMultiPairs(parameter);
                if (straight != null) {
                    return straight;
                }
            }
        }
        //压联队
        if (previousOpType == DDZ_define.DDZ_CARD_TYPE.DDZ_CARD_TYPE_LIANDUI.value()) {
            previousCardList.sort(BasePockerLogic.sorterBigToSmallHaveTrump);
            parameter.targetType = DDZ_define.DDZ_CARD_TYPE.DDZ_CARD_TYPE_LIANDUI.value();
            return getBasePKALGUtil().getMultiPairs(parameter);
        }
        return null;
    }

    @Override
    public BaseOpCard checkCardList(BasePKParameter parameter) {
        return getBasePKALGUtil().checkMultiPairs(parameter);
    }

    @Override
    public DDZALGUtil getBasePKALGUtil() {
        return DDZALGUtil.getInstance();
    }
}
